package br.uniriotec.pssgbd.unterhaltung.model.dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import br.uniriotec.pssgbd.unterhaltung.model.entidade.Tipo;

public class TipoDAO extends GenericDAO{
	private static String sqlSelect = "SELECT cod_tipo, nome_tipo, cod_temp FROM tipo ";

	public Tipo obterTipo(String sqlWhere, int codTipo) throws SQLException, ClassNotFoundException{
		this.criaConexao(false);

		String sqlCompleta = sqlSelect + sqlWhere;

		PreparedStatement stmt = null;
		ResultSet rs = null;
		Tipo tipo = null;

		try{
			stmt = getConnection().prepareStatement(sqlCompleta);
			stmt.setInt(1, codTipo);
			rs = stmt.executeQuery();
			if (rs.next()){
				tipo = new Tipo();
				tipo.setCodTipo(rs.getInt("cod_tipo"));
				tipo.setNome(rs.getString("nome_tipo"));
			}

		}

		catch(SQLException e){
			throw e;
		}

		finally{
			try{
				stmt.close();
				rs.close();
				this.fechaConexao();
			} 
			catch (SQLException e) {
				throw e;
			}
		}

		return tipo;
	}
	
	public List<Tipo> obterTipos() throws SQLException, ClassNotFoundException{
		this.criaConexao(false);

		PreparedStatement stmt = null;
		ResultSet rs = null;
		Tipo tipo = null;
		List<Tipo> listaTipos = new ArrayList<Tipo>();

		try{
			stmt = getConnection().prepareStatement(sqlSelect);
			rs = stmt.executeQuery();
			while (rs.next()){
				tipo = new Tipo();
				tipo.setCodTipo(rs.getInt("cod_tipo"));
				tipo.setNome(rs.getString("nome_tipo"));
				listaTipos.add(tipo);
			}

		}

		catch(SQLException e){
			throw e;
		}

		finally{
			try{
				stmt.close();
				rs.close();
				this.fechaConexao();
			} 
			catch (SQLException e) {
				throw e;
			}
		}

		return listaTipos;
	}

	public static String getSqlSelect() {
		return sqlSelect;
	}
}
